Apache Commons IO লাইব্রেরি ফাইল ম্যানিপুলেশন এবং ইনপুট/আউটপুট সম্পর্কিত অন্যান্য কার্যকলাপের জন্য কার্যকরী সরঞ্জাম সরবরাহ করে, তবে এটি metadata management সম্পর্কিত কার্যক্রমেও সাহায্য করতে পারে। ফাইলের metadata এমন তথ্য যা ফাইলের নিজস্ব বৈশিষ্ট্য বা এর সাথে সম্পর্কিত কোনো অতিরিক্ত তথ্য ধারণ করে, যেমন ফাইলের আকার, তারিখ, মালিক, অনুমতি, এবং আরও অনেক কিছু। এই তথ্য সাধারণত ফাইল সিস্টেমের অংশ হয়, তবে Apache Commons IO লাইব্রেরি ব্যবহার করে আপনি এই মেটাডেটা ম্যানিপুলেশন এবং পরিচালনা করতে পারেন।
এখানে Apache Commons IO ব্যবহার করে Advanced Metadata Management Techniques নিয়ে আলোচনা করা হবে।
ফাইলের মেটাডেটা মূলত ফাইলের কিছু অতিরিক্ত বৈশিষ্ট্য যেগুলি ফাইল সিস্টেমে সংরক্ষিত থাকে। যেমন, ফাইলের আকার, সংশোধনের সময়, এবং অ্যাক্সেস সময় ইত্যাদি।
Apache Commons IO লাইব্রেরি দিয়ে কিছু সাধারণ মেটাডেটা অ্যাক্সেস করা সম্ভব, যেমন ফাইলের আকার, সংশোধন তারিখ ইত্যাদি।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileMetadataExample {
public static void main(String[] args) {
// ফাইল অবজেক্ট তৈরি
File file = new File("example.txt");
// ফাইলের আকার (বাইটে)
long fileSize = FileUtils.sizeOf(file);
System.out.println("ফাইলের আকার: " + fileSize + " বাইট");
// ফাইলের সংশোধন তারিখ
long lastModified = file.lastModified();
System.out.println("ফাইলের সংশোধন তারিখ: " + lastModified);
// ফাইলের পাথ
String filePath = file.getAbsolutePath();
System.out.println("ফাইলের পূর্ণ পাথ: " + filePath);
}
}
FileUtils.sizeOf(file)
: ফাইলের আকার (size) বাইটে রিটার্ন করে।file.lastModified()
: ফাইলটির সংশোধন সময় রিটার্ন করে, যা Unix timestamp হিসেবে হয়।file.getAbsolutePath()
: ফাইলটির পূর্ণ পাথ রিটার্ন করে।ফাইলের আকার: 1024 বাইট
ফাইলের সংশোধন তারিখ: 1635243900000
ফাইলের পূর্ণ পাথ: /path/to/example.txt
ফাইল পারমিশন একটি ফাইলের সাথে সম্পর্কিত নিরাপত্তা বৈশিষ্ট্য যা ফাইলটি পড়া, লেখা, এবং এক্সিকিউট করা যাবে কিনা তা নির্ধারণ করে। Apache Commons IO লাইব্রেরি সোজা ভাবে পারমিশন চেক বা সেট করার জন্য সরাসরি কোন মেথড সরবরাহ করে না, তবে আপনি সাধারণ File
ক্লাসের সাহায্যে ফাইলের পারমিশন যাচাই এবং পরিবর্তন করতে পারেন।
import java.io.File;
public class FilePermissionExample {
public static void main(String[] args) {
File file = new File("example.txt");
// ফাইলের পারমিশন চেক করা
System.out.println("ফাইলটি পড়ার অনুমতি আছে: " + file.canRead());
System.out.println("ফাইলটি লেখার অনুমতি আছে: " + file.canWrite());
System.out.println("ফাইলটি এক্সিকিউট করার অনুমতি আছে: " + file.canExecute());
// পারমিশন পরিবর্তন
boolean canWrite = file.setWritable(true); // লেখার অনুমতি দেওয়া
System.out.println("লেখার অনুমতি পরিবর্তন করা হয়েছে: " + canWrite);
}
}
file.canRead()
, file.canWrite()
, file.canExecute()
: ফাইলের পড়া, লেখা এবং এক্সিকিউট করার পারমিশন চেক করে।file.setWritable(true)
: ফাইলের লেখার অনুমতি পরিবর্তন করে।ফাইলটি পড়ার অনুমতি আছে: true
ফাইলটি লেখার অনুমতি আছে: true
ফাইলটি এক্সিকিউট করার অনুমতি আছে: false
লেখার অনুমতি পরিবর্তন করা হয়েছে: true
ফাইলের modification timestamp এবং creation timestamp ফাইলের মেটাডেটা সম্পর্কিত অত্যন্ত গুরুত্বপূর্ণ তথ্য। Apache Commons IO এ এসব টাইমস্ট্যাম্প ম্যানেজ করার জন্য সরাসরি কোন মেথড নেই, তবে আপনি File
ক্লাসের মাধ্যমে এগুলি পেতে এবং সেট করতে পারেন।
import java.io.File;
public class FileTimestampExample {
public static void main(String[] args) {
File file = new File("example.txt");
// ফাইলের সংশোধন তারিখ (timestamp) পাওয়া
long lastModified = file.lastModified();
System.out.println("ফাইলের সংশোধন টাইমস্ট্যাম্প: " + lastModified);
// নতুন সংশোধন টাইমস্ট্যাম্প সেট করা
boolean isModified = file.setLastModified(System.currentTimeMillis());
System.out.println("ফাইলের সংশোধন টাইমস্ট্যাম্প আপডেট করা হয়েছে: " + isModified);
}
}
file.lastModified()
: ফাইলের সর্বশেষ সংশোধনের টাইমস্ট্যাম্প রিটার্ন করে।file.setLastModified()
: ফাইলের সংশোধন টাইমস্ট্যাম্প সেট করে।ফাইলের সংশোধন টাইমস্ট্যাম্প: 1635243900000
ফাইলের সংশোধন টাইমস্ট্যাম্প আপডেট করা হয়েছে: true
যদি আপনি বিশেষ ধরনের মেটাডেটা, যেমন Exif data বা PDF metadata এক্সট্র্যাক্ট করতে চান, তাহলে আপনাকে Apache Commons IO এর বাইরেও অন্যান্য লাইব্রেরি ব্যবহার করতে হতে পারে। উদাহরণস্বরূপ, Apache Tika ব্যবহার করে আপনি ফাইলের metadata এক্সট্র্যাক্ট করতে পারেন।
FileFilter এবং FilenameUtils সহ Apache Commons IO ব্যবহার করে আপনি ফাইলের নাম, এক্সটেনশন, আকার বা সংশোধনের তারিখের উপর ভিত্তি করে ফাইল ফিল্টার করতে পারেন। আপনি যদি মেটাডেটার ওপর ভিত্তি করে ফাইল ফিল্টার করতে চান, তবে নিম্নলিখিত কৌশল ব্যবহার করতে পারেন।
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import java.io.File;
import java.util.Collection;
public class FileMetadataFilterExample {
public static void main(String[] args) {
File directory = new File("C:/exampleDirectory");
// ফাইল ফিল্টার তৈরি (মাত্র .txt এক্সটেনশনের ফাইল)
Collection<File> files = FileUtils.listFiles(directory, FileFilterUtils.suffixFileFilter(".txt"), null);
// ফিল্টার করা ফাইলগুলো প্রিন্ট করা
for (File file : files) {
System.out.println("ফিল্টার করা ফাইল: " + file.getName());
}
}
}
FileFilterUtils.suffixFileFilter(".txt")
: এটি একটি ফাইল ফিল্টার তৈরি করে যা শুধুমাত্র .txt
এক্সটেনশনযুক্ত ফাইল গুলোকে নির্বাচন করে।FileUtils.listFiles()
: এটি ডিরেক্টরি থেকে ফাইল ফিল্টারিং করে কেবলমাত্র নির্বাচিত ফাইল গুলো রিটার্ন করে।ফিল্টার করা ফাইল: example1.txt
ফিল্টার করা ফাইল: example2.txt
Apache Commons IO ফাইল এবং ডিরেক্টরি সম্পর্কিত metadata management এবং file manipulation এর জন্য খুবই শক্তিশালী সরঞ্জাম সরবরাহ করে। FileUtils এবং FilenameUtils সহ অন্যান্য ক্লাস ব্যবহার করে আপনি ফাইলের কন্টেন্ট, আকার, সংশোধন তারিখ, পারমিশন, এবং অন্যান্য মেটাডেটা সহজে ম্যানেজ করতে পারেন। এটি ফাইল ম্যানিপুলেশন, ফিল্টারিং এবং মেটাডেটা এক্সট্র্যাকশনকে অনেক সহজ করে তোলে, যা Java ডেভেলপারদের জন্য খুবই কার্যকরী।
common.read_more